package main

import "fmt"

// FF1 定义函数类型FF1
type FF1 func(a, b int) int

// 为自定义类型绑定方法
func (f FF1) show(a, b, c int) {
	fmt.Println("show方法被调用")
}

// 为自定义类型绑定方法
func (f FF1) calc(a, b, c int) {
	f(a, b)
	fmt.Println("calc方法被调用")
}

// Add1 定义函数
func Add1(a, b int) int {
	return a + b
}

// 如果多个结构和FF1相同，那么进行强制类型转换后，这些结构都可获得calc与show方法。
// FF1则成了为多个函数提供公共能力的载体
func main() {
	//将函数Add1强制转换为FF1类型，并赋值给a
	a := FF1(Add1)
	a.show(1, 2, 3)
	a.calc(1, 2, 3)
}
